Software vendors are continually advancing the latest in development tools for users to take advantage of software made available to consumers. Typically, such tools require some level of familiarity by developer with the tool(s) language and structure in order to use the development tool(s) and develop the appropriate interface. However, the rapid evolution in which such development frameworks are manufactured and sold impact the speed with which such tools can be understood and used to provide the software for which they are created. Developers are still left spending an inordinate amount of time learning and struggling with the development environment in order to provide a suitable product for a customer.
Historically, application development has been an iterative process. Developer(s) begin the development process with a certain amount of known information regarding a database they need to work with within their application. The developer(s) build their database model (e.g., DataType) to reflect the known information. Thereafter, the developer(s) start consuming this model within their application. As their application and requirements evolve, developer(s) discover new elements of data that need to be added, changed or deleted from their database model. The developer is then faced with the challenge on how to synchronize the developer's application data model with the database data model.